UP@
GlobalEvents que envia players de uma area para o templo!
Por lucasy, 25 de ago. de 2015 em Scripts
info
Grupo: Herói
Registrado: 01/05/08
Posts: 2.6k
Reputação: +536
Gênero: Masculino

@@lucasy,
Primeiramente coloque essas funções nas suas librarys (qualquer uma):
function getFloorsBetweenPos(fromPos, toPos)
return math.abs(fromPos.z - toPos.z)
end
function getLowestFloor(fromPos, toPos)
return fromPos.z > toPos.z and toPos.z or fromPos.z
end
function getAllPlayersInArea(fromPos, toPos)
local players = {}
local andares = getFloorsBetweenPos(fromPos, toPos)
for index, creature in ipairs(getPlayersOnline()) do
local z = getLowestFloor(fromPos, toPos)
local frompos = {x = fromPos.x, y = fromPos.y, z = fromPos.z}
local topos = {x = toPos.x, y = toPos.y, z = toPos.z}
for i = 0, andares do
z = z or 0
frompos.z = z + i
topos.z = z + i
if isInArea(getThingPos(creature), frompos, topos) then
table.insert(players, creature)
end
end
end
return players
end
Agora em globalevents, o xml:
<globalevent name="teleport" interval="50000" event="script" value="autoteleport.lua"/>
autoteleport.lua:
local config = {
hour = 10,
minute = 00,
initial = {x = 26367, y = 24832, z = 7},
final = {x = 26397, y = 24866, z = 7},
temple = {x = 25000, y = 25000, z = 7}
}
function onThink(interval, lastExecution, thinkInterval)
local static_time = os.time()
local hour, minute = tonumber(os.date("%H", static_time)), tonumber(os.date("%M", static_time))
if hour == config.hour and minute == config.minute then
local totalplayers = getAllPlayersInArea(config.initial, config.final)
for _, pid in pairs(totalplayers) do
doTeleportThing(pid, config.temple)
doSendMagicEffect(config.temple, CONST_ME_TELEPORT)
end
end
return true
end
@Bruno Minervino, Obrigado pela ajuda...
Coloquei o primeiro script na lib - 050-function, e o globalevents coloquei certinho. Estou testando aqui usando " hour = 00, minute = 01, " mas aparentemente não acontece nada com o jogador que está entre as coordenadas quando passa o tempo de 1 minuto .
No XML diminui o interval para fazer o teste:
<globalevent name="teleport" interval="5000" event="script" value="autoteleport.lua"/>
Poderia me ajudar?
Editado Agosto 28 por lucasy
info
Grupo: Herói
Registrado: 01/05/08
Posts: 2.6k
Reputação: +536
Gênero: Masculino

@Bruno Minervino, Obrigado pela ajuda...
Coloquei o primeiro script na lib - 050-function, e o globalevents coloquei certinho. Estou testando aqui usando " hour = 00, minute = 01, " mas aparentemente não acontece nada com o jogador que está entre as coordenadas quando passa o tempo de 1 minuto .
No XML diminui o interval para fazer o teste:
<globalevent name="teleport" interval="5000" event="script" value="autoteleport.lua"/>
Poderia me ajudar?
Amigo, é o horário da onde o servidor está rodando...
Teria que ser 00:01 (meia-noite e um) para que isso funcione.
Enquanto ao interval não precisa diminuir
Ah entendi amigo, coloquei o horário certo agora e funcionou certinho, muito obrigado =)



info
Grupo: Campones
Registrado: 04/08/15
Posts: 11
Reputação: 0
Olá pessoal do Xtibia, estou precisando de um script relativamente simples:
1 Script Globalevents que quando for 10:00hrs ele faz uma checagem entre duas coordenadas, se ouver players na area entre as coordenadas o script enviará os players para o templo automaticamente!
As posições são:
inicio: {x = 26367, y = 24832, z = 7}
Fim: {x = 26397, y = 24866, z = 7}
Templo: {x = 25000, y = 25000, z = 7}

Servidor 8.60, OTx Sv 2
Editado Agosto 25 por lucasy